//单例模式，在内存中有且仅有一个该类的实例。好处：节省内存

//懒汉式：在需要使用该对象时才去创建实例
//饿汉式：在类加载时已经创建该单例对象

// class Singleton{
//     constructor(name){
//         this.name = name
//     }

//     static getInstance=(()=>{
//         let instance = null
//         return function(name){
//             if(!instance){
//                 instance = new Singleton(name)
//             }
//             return instance
//         }
//     })()
// }

// function Singleton(name){
//     this.name = name

//     let instance=this;

//     Singleton.getInstance = (name)=>{
//         if(!instance){
//             instance = new Singleton(name)
//         }
//         return instance
//     }
// }

// var Singleton = (function(){
//     function SingletonClass(name) {
//         this.name = name
//         //do stuff
//     }
//     var instance;
//     return {
//         getInstance: function(name){
//             if (instance == null) {
//                 instance = new SingletonClass(name);
//                 // Hide the constructor so the returned object can't be new'd...
//                 // instance.constructor = null;
//             }
//             return instance;
//         }
//    };
// })();

class Singleton{
    constructor(name){
        if(Singleton.instance instanceof Singleton){
            return Singleton.instance
        }
        
        this.name = name

        Singleton.instance = this
    }

    

    
}


const t1 = new Singleton('sss')
const t2 = new Singleton('rock')
console.log(t1);
console.log(t1===t2);

// const t3 = new SingletonClass('a')
// console.log(t3);